<?php
/*
 * Обработчик запускается в контексте метода Xingle::execHandlers,
 * соответственно ему доступны и объект $this (Xingle), и блок, для которого
 * вызван обработчик ($block), и массив параметров ($params)
*/

if(count($_POST) > 0){ // Прислан логин/пароль
  if($this -> user -> login($_POST['login'], $_POST['pass'])){
  // Если пользователь опознан, отправляем его на страницу, с которой он пришел
    header("Location: " . $_POST['referrer']);
	exit();
  } else {
    // Иначе снова показываем форму с предупреждением и устанавливаем значения
    $sel = $this -> treeXPath -> xpath_eval(
      "x:field[@id='loginForm']//xhtml:input[@id='login']",
      $block
    );
    $sel -> nodeset[0] -> set_attribute('value', toUTF8($_POST['login']));
    $sel = $this -> treeXPath -> xpath_eval(
      "x:field[@id='loginForm']//xhtml:input[@id='referrer']",
      $block
    );
    $sel -> nodeset[0] -> set_attribute('value', toUTF8($_POST['referrer']));
  }
} else { // Показываем форму (удалив предупреждение об ошибке)
  $sel = $this -> treeXPath -> xpath_eval("x:field[@id='badLogin']", $block);
  if(isset($sel -> nodeset[0])){
    $block -> remove_child($sel -> nodeset[0]);
  }
  if(isset($_SERVER['HTTP_REFERER'])){
    $refParts = parse_url($_SERVER['HTTP_REFERER']);
    $sel = $this -> treeXPath -> xpath_eval(
      "x:field[@id='loginForm']//xhtml:input[@id='referrer']",
      $block
    );
	if(strpos($refParts['host'], $this -> request -> host) !== false){
      $referrer = $_SERVER['HTTP_REFERER'];
	} else {
	  $referrer = "http://www." . $this -> request -> host . "/";
    }
    $sel -> nodeset[0] -> set_attribute('value', $referrer);
  }
}
?>